package com.my.screenadapter.net.retrofit;

import com.my.screenadapter.Model.Person;
import com.my.screenadapter.net.User;
import com.my.screenadapter.net.myConvert.TestUser;

import java.util.Map;

import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;

/**
 * Created by ${张英杰} on 2017/3/14.
 */

public interface ClientService {
    //获取作物名称列表
    public static final String Base_IP ="http://172.16.103.234:10000/api/";
    //    @ Path的定位就是用于url的路径而不是参数，对于参数还是选择通过@Query来设置。
    @GET("getuser")
    Call<User> login(@Query("lifecircle") String str);// eg: 拼接结果getuser?lifecircle=str;

    @GET("test")
    Call<String> hostGithub(@Query("test")String test);// eg: 拼接结果getuser?lifecircle=str;

    @GET("{username}")
    Call<String> getUserXX(@Path("username") String username);
    //getUser方法，方法接收一个username参数，并且我们的@GET注解中使用{username}声明了访问
    // 这里你可以把{username}当做占位符，而实际运行中会通过@PATH("username")所标注的参数进行替换。
    //@ Path的定位就是用于url的路径而不是参数，对于参数还是选择通过@Query来设置

    @GET("getuser?")
    Call<User> loginQueryMap(@QueryMap Map<String, String> map);// eg: 拼接结果data=str;

    @GET("mobileLogin/submit.html")
    void getLoging(Callback<Person> ps);

    //上传文件
    @Multipart
    @POST("upload")
    Call upload(@Part("description") RequestBody description,
                @Part MultipartBody.Part file);

    //下载即将读条
    @GET("/mobilesafe/shouji360/360safesis/360MobileSafe_6.2.3.1060.apk")
    Call<ResponseBody> downloadProgress();
    //下载即将读条  http://zj.cdn.beeboxes.com/download/rom/ZhiAnZongDui_1.6.6.28.tar.gz
    @GET("/download/rom/ZhiAnZongDui_1.6.6.28.tar.gz")
    Call<ResponseBody> downloadProgress2();

    // 获取当前用户所有表  测试Token
    @GET("SampleBasicCharacteristicsReport")
    Call<String> getTokenData(@Header("token") String token);

    // 获取当前用户所有表  测试Token 可上传file
    @POST("TokenAndUpRequest")
    Call<String> upTokenData(@Header("token") String token,@Body RequestBody body);

    // TODO: 2017/5/16 以下动态URL 都可以实现
    //测试 动态Url
    @POST("MoveUrl/{mUrl}")
    Call<String> postMoveURL(@Path("mUrl") String moveUrl);
    @POST("MoveUrl2222/{mUrl}/")
    Call<String> postMoveURL_TWO(@Path("mUrl") String moveUrl);

    @POST
    Call<String> postMoveURL_THree(@Url String moveUrl);//TODO: 输入的url为完整的url全部替换baseurl

    @GET
    Call<String> changeBaseUrl(@Url String allUrl);//TODO: 输入的url为完整的url全部替换baseurl

    @GET
    Call<String> multiConvertFactory(@Url String allUrl);//
    @GET
    Call<MultiConvertFactoryBean> multiConvertFactoryGson(@Url String allUrl);//


    //通过charleas 代理请求
    @GET
    Call<TestUser> testMyConvertFactoryForResponseIllegal(@Url String allUrl);//

}
